import { useState, useEffect } from 'react';

/**
 * 防抖函数
 * @param value 值
 * @param delay 延迟时间
 * @returns 防抖值
 */
export function useDebounce<T>(value: T, delay: number): T {
  // 防抖值
  const [debouncedValue, setDebouncedValue] = useState<T>(value);
  // 设置定时器
  useEffect(() => {
    const timer = setTimeout(() => {
      setDebouncedValue(value);
    }, delay);
    // 清除定时器
    return () => {
      clearTimeout(timer);
    };
  }, [value, delay]);
  // 返回防抖值
  return debouncedValue;
}
